home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
a_utils
/
yacc
/
flexyacc
/
aflex.lha
/
aflex
/
src
/
misc_defsS.a
< prev
next >
Wrap
Text File
|
1991-05-16
|
23KB
|
578 lines
-- Copyright (c) 1990 Regents of the University of California.
-- All rights reserved.
--
-- This software was developed by John Self of the Arcadia project
-- at the University of California, Irvine.
--
-- Redistribution and use in source and binary forms are permitted
-- provided that the above copyright notice and this paragraph are
-- duplicated in all such forms and that any documentation,
-- advertising materials, and other materials related to such
-- distribution and use acknowledge that the software was developed
-- by the University of California, Irvine. The name of the
-- University may not be used to endorse or promote products derived
-- from this software without specific prior written permission.
-- THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-- WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-- TITLE miscellaneous definitions
-- AUTHOR: John Self (UCI)
-- DESCRIPTION contains all global variables used in aflex.
-- also some subprograms which are commonly used.
-- NOTES The real purpose of this file is to contain all miscellaneous
-- items (functions, MACROS, variables definitions) which were at the
-- top level of flex.
-- $Header: /co/ua/self/arcadia/alex/ada/RCS/misc_defsS.a,v 1.8 90/01/04 13:39:
-- 33 self Exp Locker: self $
with TEXT_IO, TSTRING;
use TEXT_IO, TSTRING;
package MISC_DEFS is
-- various definitions that were in parse.y
PAT, SCNUM, EPS, HEADCNT, TRAILCNT, ANYCCL, LASTCHAR, ACTVP, RULELEN : INTEGER
;
TRLCONTXT, XCLUFLG, CCLSORTED, VARLENGTH, VARIABLE_TRAIL_RULE : BOOLEAN;
MADEANY : BOOLEAN := FALSE; -- whether we've made the '.' character class
PREVIOUS_CONTINUED_ACTION : BOOLEAN; -- whether the previous rule's action wa
-- s '|'
-- maximum line length we'll have to deal with
MAXLINE : constant INTEGER := 1024;
-- These typees are needed for the various allocators.
type UNBOUNDED_INT_ARRAY is array ( INTEGER range <> ) of INTEGER;
type INT_PTR is access UNBOUNDED_INT_ARRAY;
type INT_STAR is access INTEGER;
type UNBOUNDED_INT_STAR_ARRAY is array ( INTEGER range <> ) of INT_PTR;
type INT_STAR_PTR is access UNBOUNDED_INT_STAR_ARRAY;
type UNBOUNDED_VSTRING_ARRAY is array ( INTEGER range <> ) of VSTRING;
type VSTRING_PTR is access UNBOUNDED_VSTRING_ARRAY;
type BOOLEAN_ARRAY is array ( INTEGER range <> ) of BOOLEAN;
type BOOLEAN_PTR is access BOOLEAN_ARRAY;
type CHAR_ARRAY is array ( INTEGER range <> ) of CHARACTER;
type CHAR_PTR is access CHAR_ARRAY;
-- different types of states; values are useful as masks, as well, for
-- routines like check_trailing_context()
type STATE_ENUM is (STATE_NORMAL, STATE_TRAILING_CONTEXT);
type UNBOUNDED_STATE_ENUM_ARRAY is array ( INTEGER range <> ) of STATE_ENUM;
type STATE_ENUM_PTR is access UNBOUNDED_STATE_ENUM_ARRAY;
-- different types of rules
type RULE_ENUM is (RULE_NORMAL, RULE_VARIABLE);
type UNBOUNDED_RULE_ENUM_ARRAY is array ( INTEGER range <> ) of RULE_ENUM;
type RULE_ENUM_PTR is access UNBOUNDED_RULE_ENUM_ARRAY;
type DFAACC_TYPE is
record
DFAACC_SET : INT_PTR;
DFAACC_STATE : INTEGER;
end record;
type UNBOUNDED_DFAACC_ARRAY is array ( INTEGER range <> ) of DFAACC_TYPE;
type DFAACC_PTR is access UNBOUNDED_DFAACC_ARRAY;
-- maximum size of file name
FILENAMESIZE : constant INTEGER := 1024;
function MIN (X, Y : in INTEGER) return INTEGER;
function MAX (X, Y : in INTEGER) return INTEGER;
-- special chk[] values marking the slots taking by end-of-buffer and action
-- numbers
EOB_POSITION : constant INTEGER := - 1;
ACTION_POSITION : constant INTEGER := - 2;
-- number of data items per line for -f output
NUMDATAITEMS : constant INTEGER := 10;
-- number of lines of data in -f output before inserting a blank line for
-- readability.
NUMDATALINES : constant INTEGER := 10;
-- transition_struct_out() definitions
TRANS_STRUCT_PRINT_LENGTH : constant INTEGER := 15;
-- returns true if an nfa state has an epsilon out-transition slot
-- that can be used. This definition is currently not used.
function FREE_EPSILON ( STATE : in INTEGER) return BOOLEAN;
-- returns true if an nfa state has an epsilon out-transition character
-- and both slots are free
function SUPER_FREE_EPSILON (STATE : in INTEGER) return BOOLEAN;
-- maximum number of NFA states that can comprise a DFA state. It's real
-- big because if there's a lot of rules, the initial state will have a
-- huge epsilon closure.
INITIAL_MAX_DFA_SIZE : constant INTEGER := 750;
MAX_DFA_SIZE_INCREMENT : constant INTEGER := 750;
-- a note on the following masks. They are used to mark accepting numbers
-- as being special. As such, they implicitly limit the number of accepting
-- numbers (i.e., rules) because if there are too many rules the rule numbers
-- will overload the mask bits. Fortunately, this limit is \large/ (0x2000 ==
-- 8192) so unlikely to actually cause any problems. A check is made in
-- new_rule() to ensure that this limit is not reached.
-- mask to mark a trailing context accepting number
-- #define YY_TRAILING_MASK 0x2000
YY_TRAILING_MASK : constant INTEGER := 16#2000#;
-- mask to mark the accepting number of the "head" of a trailing context rule
-- #define YY_TRAILING_HEAD_MASK 0x4000
YY_TRAILING_HEAD_MASK : constant INTEGER := 16#4000#;
-- maximum number of rules, as outlined in the above note
MAX_RULE : constant INTEGER := YY_TRAILING_MASK - 1;
-- NIL must be 0. If not, its special meaning when making equivalence classes
-- (it marks the representative of a given e.c.) will be unidentifiable
NIL : constant INTEGER := 0;
JAM : constant INTEGER := - 1; -- to mark a missing DFA transition
NO_TRANSITION : constant INTEGER := NIL;
UNIQUE : constant INTEGER := - 1; -- marks a symbol as an e.c. representative
INFINITY : constant INTEGER := - 1; -- for x{5,} constructions
-- size of input alphabet - should be size of ASCII set
CSIZE : constant INTEGER := 127;
INITIAL_MAX_CCLS : constant INTEGER := 100; -- max number of unique character
-- classes
MAX_CCLS_INCREMENT : constant INTEGER := 100;
-- size of table holding members of character classes
INITIAL_MAX_CCL_TBL_SIZE : constant INTEGER := 500;
MAX_CCL_TBL_SIZE_INCREMENT : constant INTEGER := 250;
INITIAL_MAX_RULES : constant INTEGER := 100;
-- default maximum number of rules
MAX_RULES_INCREMENT : constant INTEGER := 100;
INITIAL_MNS : constant INTEGER := 2000; -- default maximum number of nfa stat
-- es
MNS_INCREMENT : constant INTEGER := 1000; -- amount to bump above by if it's
-- not enough
INITIAL_MAX_DFAS : constant INTEGER := 1000; -- default maximum number of dfa
-- states
MAX_DFAS_INCREMENT : constant INTEGER := 1000;
JAMSTATE_CONST : constant INTEGER := - 32766; -- marks a reference to the sta
-- te that always jams
-- enough so that if it's subtracted from an NFA state number, the result
-- is guaranteed to be negative
MARKER_DIFFERENCE : constant INTEGER := 32000;
MAXIMUM_MNS : constant INTEGER := 31999;
-- maximum number of nxt/chk pairs for non-templates
INITIAL_MAX_XPAIRS : constant INTEGER := 2000;
MAX_XPAIRS_INCREMENT : constant INTEGER := 2000;
-- maximum number of nxt/chk pairs needed for templates
INITIAL_MAX_TEMPLATE_XPAIRS : constant INTEGER := 2500;
MAX_TEMPLATE_XPAIRS_INCREMENT : constant INTEGER := 2500;
SYM_EPSILON : constant INTEGER := 0; -- to mark transitions on the symbol eps
-- ilon
INITIAL_MAX_SCS : constant INTEGER := 40; -- maximum number of start conditio
-- ns
MAX_SCS_INCREMENT : constant INTEGER := 40; -- amount to bump by if it's not
-- enough
ONE_STACK_SIZE : constant INTEGER := 500; -- stack of states with only one ou
-- t-transition
SAME_TRANS : constant INTEGER := - 1; -- transition is the same as "default"
-- entry for state
-- the following percentages are used to tune table compression:
--
-- the percentage the number of out-transitions a state must be of the
-- number of equivalence classes in order to be considered for table
-- compaction by using protos
PROTO_SIZE_PERCENTAGE : constant INTEGER := 15;
-- the percentage the number of homogeneous out-transitions of a state
-- must be of the number of total out-transitions of the state in order
-- that the state's transition table is first compared with a potential
-- template of the most common out-transition instead of with the first
--proto in the proto queue
CHECK_COM_PERCENTAGE : constant INTEGER := 50;
-- the percentage the number of differences between a state's transition
-- table and the proto it was first compared with must be of the total
-- number of out-transitions of the state in order to keep the first
-- proto as a good match and not search any further
FIRST_MATCH_DIFF_PERCENTAGE : constant INTEGER := 10;
-- the percentage the number of differences between a state's transition
-- table and the most similar proto must be of the state's total number
-- of out-transitions to use the proto as an acceptable close match
ACCEPTABLE_DIFF_PERCENTAGE : constant INTEGER := 50;
-- the percentage the number of homogeneous out-transitions of a state
-- must be of the number of total out-transitions of the state in order
-- to consider making a template from the state
TEMPLATE_SAME_PERCENTAGE : constant INTEGER := 60;
-- the percentage the number of differences between a state's transition
-- table and the most similar proto must be of the state's total number
-- of out-transitions to create a new proto from the state
NEW_PROTO_DIFF_PERCENTAGE : constant INTEGER := 20;
-- the percentage the total number of out-transitions of a state must be
-- of the number of equivalence classes in order to consider trying to
-- fit the transition table into "holes" inside the nxt/chk table.
INTERIOR_FIT_PERCENTAGE : constant INTEGER := 15;
-- size of region set aside to cache the complete transition table of
-- protos on the proto queue to enable quick comparisons
PROT_SAVE_SIZE : constant INTEGER := 2000;
MSP : constant INTEGER := 50; -- maximum number of saved protos (protos on th
-- e proto queue)
-- maximum number of out-transitions a state can have that we'll rummage
-- around through the interior of the internal fast table looking for a
-- spot for it
MAX_XTIONS_FULL_INTERIOR_FIT : constant INTEGER := 4;
-- maximum number of rules which will be reported as being associated
-- with a DFA state
MAX_ASSOC_RULES : constant INTEGER := 100;
-- number that, if used to subscript an array, has a good chance of producing
-- an error; should be small enough to fit into a short
BAD_SUBSCRIPT : constant INTEGER := - 32767;
-- Declarations for global variables.
-- variables for symbol tables:
-- sctbl - start-condition symbol table
-- ndtbl - name-definition symbol table
-- ccltab - character class text symbol table
type HASH_ENTRY;
type HASH_LINK is access HASH_ENTRY;
type HASH_ENTRY is
record
PREV, NEXT : HASH_LINK;
NAME, STR_VAL : VSTRING;
INT_VAL : INTEGER;
end record;
type HASH_TABLE is array ( INTEGER range <> ) of HASH_LINK;
NAME_TABLE_HASH_SIZE : constant INTEGER := 101;
START_COND_HASH_SIZE : constant INTEGER := 101;
CCL_HASH_SIZE : constant INTEGER := 101;
subtype NDTBL_TYPE is HASH_TABLE (0 .. NAME_TABLE_HASH_SIZE - 1);
NDTBL : NDTBL_TYPE;
subtype SCTBL_TYPE is HASH_TABLE (0 .. START_COND_HASH_SIZE - 1);
SCTBL : SCTBL_TYPE;
subtype CCLTAB_TYPE is HASH_TABLE (0 .. CCL_HASH_SIZE);
CCLTAB : CCLTAB_TYPE;
-- variables for flags:
-- printstats - if true (-v), dump statistics
-- syntaxerror - true if a syntax error has been found
-- eofseen - true if we've seen an eof in the input file
-- ddebug - if true (-d), make a "debug" scanner
-- trace - if true (-T), trace processing
-- spprdflt - if true (-s), suppress the default rule
-- interactive - if true (-I), generate an interactive scanner
-- caseins - if true (-i), generate a case-insensitive scanner
-- useecs - if true (-ce flag), use equivalence classes
-- fulltbl - if true (-cf flag), don't compress the DFA state table
-- usemecs - if true (-cm flag), use meta-equivalence classes
-- gen_line_dirs - if true (i.e., no -L flag), generate #line directives
-- performance_report - if true (i.e., -p flag), generate a report relating
-- to scanner performance
-- backtrack_report - if true (i.e., -b flag), generate "lex.backtrack" file
-- listing backtracking states
-- continued_action - true if this rule's action is to "fall through" to
-- the next rule's action (i.e., the '|' action)
PRINTSTATS, DDEBUG, SPPRDFLT,
INTERACTIVE, CASEINS, USEECS, FULLTBL, USEMECS,
GEN_LINE_DIRS, PERFORMANCE_REPORT, BACKTRACK_REPORT,
TRACE, EOFSEEN, CONTINUED_ACTION : BOOLEAN;
SYNTAXERROR : BOOLEAN;
-- variables used in the aflex input routines:
-- datapos - characters on current output line
-- dataline - number of contiguous lines of data in current data
-- statement. Used to generate readable -f output
-- skelfile - the skeleton file
-- yyin - input file
-- temp_action_file - temporary file to hold actions
-- backtrack_file - file to summarize backtracking states to
-- infilename - name of input file
-- linenum - current input line number
DATAPOS, DATALINE, LINENUM : INTEGER;
SKELFILE, YYIN, TEMP_ACTION_FILE, BACKTRACK_FILE, DEF_FILE : FILE_TYPE;
INFILENAME : VSTRING;
-- variables for stack of states having only one out-transition:
-- onestate - state number
-- onesym - transition symbol
-- onenext - target state
-- onedef - default base entry
-- onesp - stack pointer
ONESTATE, ONESYM, ONENEXT, ONEDEF : array (0 .. ONE_STACK_SIZE - 1) of INTEGER
;
ONESP : INTEGER;
-- variables for nfa machine data:
-- current_mns - current maximum on number of NFA states
-- num_rules - number of the last accepting state; also is number of
-- rules created so far
-- current_max_rules - current maximum number of rules
-- lastnfa - last nfa state number created
-- firstst - physically the first state of a fragment
-- lastst - last physical state of fragment
-- finalst - last logical state of fragment
-- transchar - transition character
-- trans1 - transition state
-- trans2 - 2nd transition state for epsilons
-- accptnum - accepting number
-- assoc_rule - rule associated with this NFA state (or 0 if none)
-- state_type - a STATE_xxx type identifying whether the state is part
-- of a normal rule, the leading state in a trailing context
-- rule (i.e., the state which marks the transition from
-- recognizing the text-to-be-matched to the beginning of
-- the trailing context), or a subsequent state in a trailing
-- context rule
-- rule_type - a RULE_xxx type identifying whether this a a ho-hum
-- normal rule or one which has variable head & trailing
-- context
-- rule_linenum - line number associated with rule
CURRENT_MNS, NUM_RULES, CURRENT_MAX_RULES, LASTNFA : INTEGER;
FIRSTST, LASTST, FINALST, TRANSCHAR, TRANS1, TRANS2 : INT_PTR;
ACCPTNUM, ASSOC_RULE, RULE_LINENUM : INT_PTR;
RULE_TYPE : RULE_ENUM_PTR;
STATE_TYPE : STATE_ENUM_PTR;
-- global holding current type of state we're making
CURRENT_STATE_ENUM : STATE_ENUM;
-- true if the input rules include a rule with both variable-length head
-- and trailing context, false otherwise
VARIABLE_TRAILING_CONTEXT_RULES : BOOLEAN;
-- variables for protos:
-- numtemps - number of templates created
-- numprots - number of protos created
-- protprev - backlink to a more-recently used proto
-- protnext - forward link to a less-recently used proto
-- prottbl - base/def table entry for proto
-- protcomst - common state of proto
-- firstprot - number of the most recently used proto
-- lastprot - number of the least recently used proto
-- protsave contains the entire state array for protos
NUMTEMPS, NUMPROTS, FIRSTPROT, LASTPROT : INTEGER;
PROTPREV, PROTNEXT, PROTTBL, PROTCOMST : array (0 .. MSP - 1) of INTEGER;
PROTSAVE : array (0 .. PROT_SAVE_SIZE - 1) of INTEGER;
-- variables for managing equivalence classes:
-- numecs - number of equivalence classes
-- nextecm - forward link of Equivalence Class members
-- ecgroup - class number or backward link of EC members
-- nummecs - number of meta-equivalence classes (used to compress
-- templates)
-- tecfwd - forward link of meta-equivalence classes members
-- * tecbck - backward link of MEC's
NUMECS, NUMMECS : INTEGER;
subtype C_SIZE_ARRAY is UNBOUNDED_INT_ARRAY (0 .. CSIZE);
type C_SIZE_BOOL_ARRAY is array (0 .. CSIZE) of BOOLEAN;
NEXTECM, ECGROUP, TECFWD, TECBCK : C_SIZE_ARRAY;
-- variables for start conditions:
-- lastsc - last start condition created
-- current_max_scs - current limit on number of start conditions
-- scset - set of rules active in start condition
-- scbol - set of rules active only at the beginning of line in a s.c.
-- scxclu - true if start condition is exclusive
-- sceof - true if start condition has EOF rule
-- scname - start condition name
-- actvsc - stack of active start conditions for the current rule
LASTSC, CURRENT_MAX_SCS : INTEGER;
SCSET, SCBOL : INT_PTR;
SCXCLU, SCEOF : BOOLEAN_PTR;
ACTVSC : INT_PTR;
SCNAME : VSTRING_PTR;
-- variables for dfa machine data:
-- current_max_dfa_size - current maximum number of NFA states in DFA
-- current_max_xpairs - current maximum number of non-template xtion pairs
-- current_max_template_xpairs - current maximum number of template pairs
-- current_max_dfas - current maximum number DFA states
-- lastdfa - last dfa state number created
-- nxt - state to enter upon reading character
-- chk - check value to see if "nxt" applies
-- tnxt - internal nxt table for templates
-- base - offset into "nxt" for given state
-- def - where to go if "chk" disallows "nxt" entry
-- tblend - last "nxt/chk" table entry being used
-- firstfree - first empty entry in "nxt/chk" table
-- dss - nfa state set for each dfa
-- dfasiz - size of nfa state set for each dfa
-- dfaacc - accepting set for each dfa state (or accepting number, if
-- -r is not given)
-- accsiz - size of accepting set for each dfa state
-- dhash - dfa state hash value
-- numas - number of DFA accepting states created; note that this
-- is not necessarily the same value as num_rules, which is the analogous
-- value for the NFA
-- numsnpairs - number of state/nextstate transition pairs
-- jambase - position in base/def where the default jam table starts
-- jamstate - state number corresponding to "jam" state
-- end_of_buffer_state - end-of-buffer dfa state number
CURRENT_MAX_DFA_SIZE, CURRENT_MAX_XPAIRS : INTEGER;
CURRENT_MAX_TEMPLATE_XPAIRS, CURRENT_MAX_DFAS : INTEGER;
LASTDFA, LASTTEMP : INTEGER;
NXT, CHK, TNXT : INT_PTR;
BASE, DEF , DFASIZ : INT_PTR;
TBLEND, FIRSTFREE : INTEGER;
DSS : INT_STAR_PTR;
DFAACC : DFAACC_PTR;
-- type declaration for dfaacc_type moved above
ACCSIZ, DHASH : INT_PTR;
END_OF_BUFFER_STATE, NUMSNPAIRS, JAMBASE, JAMSTATE, NUMAS : INTEGER;
-- variables for ccl information:
-- lastccl - ccl index of the last created ccl
-- current_maxccls - current limit on the maximum number of unique ccl's
-- cclmap - maps a ccl index to its set pointer
-- ccllen - gives the length of a ccl
-- cclng - true for a given ccl if the ccl is negated
-- cclreuse - counts how many times a ccl is re-used
-- current_max_ccl_tbl_size - current limit on number of characters needed
-- to represent the unique ccl's
-- ccltbl - holds the characters in each ccl - indexed by cclmap
CURRENT_MAX_CCL_TBL_SIZE, LASTCCL, CURRENT_MAXCCLS, CCLREUSE : INTEGER;
CCLMAP, CCLLEN, CCLNG : INT_PTR;
CCLTBL : CHAR_PTR;
-- variables for miscellaneous information:
-- starttime - real-time when we started
-- endtime - real-time when we ended
-- nmstr - last NAME scanned by the scanner
-- sectnum - section number currently being parsed
-- nummt - number of empty nxt/chk table entries
-- hshcol - number of hash collisions detected by snstods
-- dfaeql - number of times a newly created dfa was equal to an old one
-- numeps - number of epsilon NFA states created
-- eps2 - number of epsilon states which have 2 out-transitions
-- num_reallocs - number of times it was necessary to realloc() a group
-- of arrays
-- tmpuses - number of DFA states that chain to templates
-- totnst - total number of NFA states used to make DFA states
-- peakpairs - peak number of transition pairs we had to store internally
-- numuniq - number of unique transitions
-- numdup - number of duplicate transitions
-- hshsave - number of hash collisions saved by checking number of states
-- num_backtracking - number of DFA states requiring back-tracking
-- bol_needed - whether scanner needs beginning-of-line recognition
NMSTR : VSTRING;
SECTNUM, NUMMT, HSHCOL, DFAEQL, NUMEPS, EPS2, NUM_REALLOCS : INTEGER;
TMPUSES, TOTNST, PEAKPAIRS, NUMUNIQ, NUMDUP, HSHSAVE : INTEGER;
NUM_BACKTRACKING : INTEGER;
BOL_NEEDED : BOOLEAN;
function ALLOCATE_INTEGER_ARRAY (SIZE : in INTEGER) return INT_PTR;
function ALLOCATE_INT_PTR_ARRAY (SIZE : in INTEGER) return INT_STAR_PTR;
function ALLOCATE_VSTRING_ARRAY (SIZE : in INTEGER) return VSTRING_PTR;
function ALLOCATE_DFAACC_UNION (SIZE : in INTEGER) return DFAACC_PTR;
function ALLOCATE_CHARACTER_ARRAY (SIZE : in INTEGER) return CHAR_PTR;
function ALLOCATE_RULE_ENUM_ARRAY (SIZE : in INTEGER) return RULE_ENUM_PTR;
function ALLOCATE_STATE_ENUM_ARRAY (SIZE : in INTEGER) return STATE_ENUM_PTR;
function ALLOCATE_BOOLEAN_ARRAY (SIZE : in INTEGER) return BOOLEAN_PTR;
procedure REALLOCATE_INTEGER_ARRAY (ARR : in out INT_PTR;
SIZE : in INTEGER);
procedure REALLOCATE_INT_PTR_ARRAY (ARR : in out INT_STAR_PTR;
SIZE : in INTEGER);
procedure REALLOCATE_VSTRING_ARRAY (ARR : in out VSTRING_PTR;
SIZE : in INTEGER);
procedure REALLOCATE_DFAACC_UNION (ARR : in out DFAACC_PTR;
SIZE : in INTEGER);
procedure REALLOCATE_CHARACTER_ARRAY (ARR : in out CHAR_PTR;
SIZE : in INTEGER);
procedure REALLOCATE_RULE_ENUM_ARRAY (ARR : in out RULE_ENUM_PTR;
SIZE : in INTEGER);
procedure REALLOCATE_STATE_ENUM_ARRAY (ARR : in out STATE_ENUM_PTR;
SIZE : in INTEGER);
procedure REALLOCATE_BOOLEAN_ARRAY (ARR : in out BOOLEAN_PTR;
SIZE : in INTEGER);
end MISC_DEFS;